package com.architecture.core.utils;

import com.architecture.core.web.vo.PageDataVO;

/**
 * Created with IntelliJ IDEA.
 * User: hjg
 * Date: 12-11-12
 * Time: 下午2:13
 * To change this template use File | Settings | File Templates.
 */
public final class PageUtils {

    private PageDataVO data;

    public PageUtils(PageDataVO data) {
        this.data = data;
    }

    public void initPageData() {
        //设置总页数
        this.setTotalPage();

        //设置上一页索引
        this.setPrePage();

        //设置下一页索引
        this.setNextPage();

        //设置当前显示页面索引的起始索引
        this.setStartPageIndex();

        //设置当前显示页面索引的结束索引
        this.setEndPageIndex();

    }

    //设置总页数
    private void setTotalPage() {
        int totalPage = data.getTotalData() / data.getPageSize();

        if (data.getTotalData() % data.getPageSize() > 0) {
            ++totalPage;
        }

        data.setTotalPage(totalPage);
    }

    //设置前一页索引
    private void setPrePage() {
        if (data.getCurrentPage() > 1) {
            data.setPrePage(data.getCurrentPage() - 1);
        } else {
            data.setPrePage(data.getCurrentPage());
        }
    }

    //设置下一页索引
    private void setNextPage() {
        if (data.getCurrentPage() < data.getTotalPage()) {
            data.setNextPage(data.getCurrentPage() + 1);
        } else {
            data.setNextPage(data.getCurrentPage());
        }
    }

    //设置当前显示页面索引的起始索引
    private void setStartPageIndex() {
        //当总页数小于指定数量时
        if (data.getPageIndexSize() > data.getTotalPage()) {
            data.setStartPageIndex(1);
        } else {

            int remain = data.getCurrentPage() % data.getPageIndexSize();                                            //当前页面取模

            if (remain > 0) {
                data.setStartPageIndex(data.getCurrentPage() - remain + 1);
            } else {
                data.setStartPageIndex(data.getCurrentPage() - data.getPageIndexSize() + 1);
            }
        }
    }

    //设置当前显示页面索引的结束索引
    private void setEndPageIndex() {
        //当总页数小于指定数量时
        if (data.getPageIndexSize() > data.getTotalPage()) {
            data.setEndPageIndex(data.getTotalPage());
        } else {
            int remain = data.getPageIndexSize() - (data.getCurrentPage() % data.getPageIndexSize() == 0 ? data.getPageIndexSize() : data.getCurrentPage() % data.getPageIndexSize());

            if (remain > 0) {
                data.setEndPageIndex((data.getCurrentPage() + remain) > data.getTotalPage() ? data.getTotalPage() : data.getCurrentPage() + remain);
            } else {
                data.setEndPageIndex(data.getCurrentPage());
            }

        }
    }

}
